# WeatherAPI
REST'ful веб-сервис, разработанный на языке Python с использованием библиотеки FastAPI для финала конкурса IT-planeta по категории "Прикладное программирование if_else".

## Установка (обычная)
> **_Требуется:_** Python 3.11
1. Скопировать репозиторий или скачать его в виде архива и распокавать.
2. Установить зависимости с помощью команды `pip install -r requirements.txt` в директории проекта
3. Запустить файл app.py (по умолчанию используется порт 80)

## Установка (docker)
> **_Требуется:_** Docker
1. Скопировать репозиторий или скачать его в виде архива и распокавать.
2. Запустить проект с помощью команды `docker compose up --build`

## Использование
- Веб-сервер начинает свою работу с локального IP адреса под портом 80.
- Используются разные виды запросов, большая часть требует поддержки передачи JSON содержимого.

### Известные проблемы
- Отсутствие всего заполнения postman collection (дедлайн близко)

## Функциональность
### Основные страницы
- `/` — Главная страница
- `/map` — Карта с регионами
- `/login` — Страница авторизации
- `/register` — Страница регистрации
- `/regions` — Страница управления регионами
- `/accounts` — Страница управления аккаунтами пользователей
- `/region-types` — Страница управления типами регионов

### Карта регионов
На странице `/map` отображается карта с использованием библиотеки OpenStreetMap и Leaflet. 
Регионы отображаются в виде круговых областей с радиусом. 
При наведении на маркер региона справа снизу появляется информация о регионе. 
При клике на маркер происходит ~~перенаправление на страницу региона~~ открытие менюшки с возможностью перенаправления на страницу региона.

### Управление регионами
На странице `/regions` можно добавить новый регион, а также просмотреть список существующих регионов. 
Можно удалить существующий регион или изменить его данные.

### Управление типами регионов
На странице `/region-types` можно добавлять новые типы регионов, изменять существующие, 
а также удалять их. Список типов регионов можно получить через метод GET `/region/types/array`.

## Условия использования
Участник предоставляет Организатору разрешение на использование, модификацию, публикацию проекта и дальнейшее распространение, включая право на внесение изменений, дополнений, предисловий, комментариев и любых других переработок.

Участник гарантирует, что проект не нарушает действующее законодательство, не содержит информации, дискредитирующей лиц или продукты, не вызывает судебных исков или претензий, не нарушает прав и интересов третьих лиц, соответствует общественным интересам, принципам гуманности и морали. Участник подтверждает, что все используемые в проекте материалы и данные являются его собственностью или использованы с разрешения правообладателей, что не ограничивает использование проекта Организатором в полном объеме.

Участник подтверждает, что передача исключительных прав на проект, созданный в рамках конкурса, не нарушает права третьих лиц и что все материалы проекта могут быть использованы Организатором без каких-либо ограничений.

## Разное
**_Контакты:_**
- Discord: .ravel_overflow
- Telegram: https://t.me/reyni_scarlet
> **_Примечание_:** Первые коммиты произведены пользователем "Reiny Contanger" по причине импорта репозитория.